A disk storage or disc storage is a general category of storage mechanisms, in which data are digitally recorded by various electronic, magnetic, optical, or mechanical methods on a surface layer deposited of one or more planar, round and rotating disks (or discs) (also referred to as the media).
A disk (also referred to as a disk drive) is a device implementing such a storage mechanism with fixed or removable media; with removable media the device is usually distinguished from the media as in compact disc drive and the compact disc.
Notable types are the hard disk drives (HDD) containing a non-removable disk, the floppy disk drive (FDD) and its removable floppy disk, and various optical disc drives and associated optical disc media (www.wikipedia.org).
Storage systems are generally expected to tolerate at least two concurrent disk failures without data loss. Since the capacity of disks keeps growing immensely, the chances for data loss increase dramatically. When taking into account the longer time it takes for a storage system to rebuild a failed disk of an increased size and the chances to deal with a second failure during the longer rebuild time, it is estimated that the chances for data loss in a storage system increases by the square of the size growth of the disks. Hence, storage systems should be capable of handling more than two concurrent disk failures.
Since the number of tolerated failures dictates the number of parity units need to be calculated, the more disk failures the system is expected to deal with, the greater is the overhead wasted on parity information, on the expense of user data. For example, for three tolerated disk failures for a redundant array of independent (RAID) stripe that includes 12 data units, the overhead of the three parity units need to be added to the 12 data units is 20% and for 2 tolerated disk failures, the required two parity units impose an overhead of 14% of the 12+2 data and parity units.
In order to reduce the overhead imposed by storing multiple parities for a certain amount of data units in a stripe, the amount of data units in the stripe needs to be increased. For example, instead of composing stripes of 12+3 data and parity units, the stripe can be constructed of e.g. 60+5 data and parity units, which wastes 7.7% of the total storage space, instead of 20% wasted in the case of 12+3 unit stripes. However, in such a configuration, each disk rebuild, even of a single disk failure, requires reading an excessive amount of data. In the aforementioned example, 65 data and parity units need to be processed upon recovering each lost data unit from a single disk failure (comparing to 15 units in the case of using the smaller stripe), which complicates the reconstruction, lengthen the reconstruction time and increases chances for a second failure while reconstructing.
There is a need for increasing the amount of parities for supporting more concurrent disk failures, while improving a reconstruction of a single disk failure and reducing the parity overhead.